home *** CD-ROM | disk | FTP | other *** search
/ Kit PC World De Ampliacion De Windows 95 / Kit PC World de ampliacion de Windows 95.iso / internet / sweeper / samples / olecon~1 / controls / button / button~2.cpp < prev    next >
Text File  |  1995-11-25  |  6KB  |  203 lines

  1. //=--------------------------------------------------------------------------=
  2. // ButtonPPG.Cpp
  3. //=--------------------------------------------------------------------------=
  4. // Copyright  1995  Microsoft Corporation.  All Rights Reserved.
  5. //
  6. // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF 
  7. // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO 
  8. // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A 
  9. // PARTICULAR PURPOSE.
  10. //=--------------------------------------------------------------------------=
  11. //
  12. // property page implementations for Button control.
  13. //
  14. #include "IPServer.H"
  15.  
  16. #include "LocalObj.H"
  17. #include "ButtonPPG.H"
  18. #include "ButtonCtl.H"
  19. #include "Resource.H"
  20. #include "Util.H"
  21.  
  22.  
  23. // for ASSERT and FAIL
  24. //
  25. SZTHISFILE
  26.  
  27. //=--------------------------------------------------------------------------=
  28. // Property Page messages
  29. //=--------------------------------------------------------------------------=
  30. // in addition to regular windows messages you'll receive for a dialog box,
  31. // you'll receive the following messages in your property page implementation:
  32. //
  33. // PPM_NEWOBJECTS:
  34. //    wParam = 0;
  35. //    lParam = (LPARAM)(HRESULT *)hr
  36. //
  37. //  - in this message, you should call FirstControl() to get a pointer to a
  38. //    control, and initialize the values in the property page dialog with
  39. //    values from the control object.  put results from the operation in
  40. //    the HRESULT pointed to by LPARAM.
  41. //
  42. // PPM_APPLY:
  43. //    wParam = 0;
  44. //    lParam = (LPARAM)(HRESULT *)hr
  45. //
  46. //  - this message is sent to your dialog whenever the user clicks APPLY or OK
  47. //    in the dialog.  you should have a loop with the following code in it:
  48. //
  49. //      for (pUnk = FirstControl(&dwCookie) ; pUnk; pUnk = NextControl(&dwCookie)) {
  50. //            hr = pUnk->QueryInterface(IID_IMyCtlInterface, (void **)&pMyCtl);
  51. //            // set properties here!!!
  52. //      }
  53. //
  54. //    call PropPageException() if there is an error while setting propertites
  55. //    to show the exception set up by the property set routine.
  56. //
  57. // PPM_EDITPROPERTY:
  58. //    wParam = dispid
  59. //    lParam = (LPARAM)(HRESULT *)hr
  60. //
  61. //  - sent to your dialog when somebody wants you to set the focus to a specific
  62. //    property [typically, one will see a call to this when one returns a page
  63. //    from IPerPropertyBrowsing::MapPropertyToPage].  you can use this
  64. //    to bring up dialogs, or do whatever flaps your flagella.
  65. //
  66.  
  67.  
  68. //=--------------------------------------------------------------------------=
  69. // CButtonGeneralPage::Create
  70. //=--------------------------------------------------------------------------=
  71. // global static creation function.
  72. //
  73. // Parameters:
  74. //    IUnknown *    - [in] controlling unknown
  75. //
  76. // Output:
  77. //    IUnknown *    - new prop page.
  78. //
  79. // Notes:
  80. //
  81. IUnknown *CButtonGeneralPage::Create
  82. (
  83.     IUnknown *pUnkOuter
  84. )
  85. {
  86.     return (IUnknown *)new CButtonGeneralPage(pUnkOuter);
  87. }
  88.  
  89. //=--------------------------------------------------------------------------=
  90. // CButtonGeneralPage::CButtonGeneralPage
  91. //=--------------------------------------------------------------------------=
  92. // constructor.
  93. //
  94. // Parameters:
  95. //    IUnknown *        - [in] controlling unknown.
  96. //
  97. // Notes:
  98. //
  99. CButtonGeneralPage::CButtonGeneralPage
  100. (
  101.     IUnknown *pUnkOuter
  102. )
  103. : CPropertyPage(pUnkOuter, OBJECT_TYPE_PPGBUTTONGENERAL)
  104. {
  105.     // initialize local variables here.
  106. }
  107.  
  108. //=--------------------------------------------------------------------------=
  109. // CButtonGeneralPage::~CButtonGeneralPage
  110. //=--------------------------------------------------------------------------=
  111. // destructor.
  112. //
  113. // Notes:
  114. //
  115. CButtonGeneralPage::~CButtonGeneralPage()
  116. {
  117.     // clean up
  118. }
  119.  
  120. //=--------------------------------------------------------------------------=
  121. // CButtonGeneralPage::DialogProc
  122. //=--------------------------------------------------------------------------=
  123. // our dialog proc.
  124. //
  125. // Parameters:
  126. //    - see win32sdk docs on DialogProc
  127. //
  128. // Notes:
  129. //
  130. BOOL CButtonGeneralPage::DialogProc
  131. (
  132.     HWND   hwnd,
  133.     UINT   msg,
  134.     WPARAM wParam,
  135.     LPARAM lParam
  136. )
  137. {
  138.     switch (msg) {
  139.  
  140.       // we've been given some new objects, so go and re-set up the dialog page.
  141.       //
  142.       case PPM_NEWOBJECTS:
  143.         {
  144.         HRESULT     hr;
  145.         IButton    *pButton;
  146.         IUnknown   *pUnk;
  147.         DWORD       dwDummy;
  148.         BSTR        bstr;
  149.  
  150.         pUnk = FirstControl(&dwDummy);
  151.         if (!pUnk) return FALSE;
  152.  
  153.         hr = pUnk->QueryInterface(IID_IButton, (void **)&pButton);
  154.         if (FAILED(hr)) return FALSE;
  155.  
  156.         pButton->get_Caption(&bstr);
  157.         MAKE_ANSIPTR_FROMWIDE(psz, bstr);
  158.         SetDlgItemText(hwnd, IDC_CAPTION, psz);
  159.         SysFreeString(bstr);
  160.  
  161.         pButton->Release();
  162.         }
  163.         return TRUE;
  164.  
  165.       case PPM_APPLY:
  166.         {
  167.         IButton  *pButton;
  168.         IUnknown *pUnk;
  169.         HRESULT   hr;
  170.         DWORD     dwCookie;
  171.         BSTR      bstr;
  172.         char      szTmp[120];
  173.  
  174.         // get all the controls we have to update.
  175.         //
  176.         for (pUnk = FirstControl(&dwCookie) ; pUnk; pUnk = NextControl(&dwCookie)) {
  177.             hr = pUnk->QueryInterface(IID_IButton, (void **)&pButton);
  178.             if (FAILED(hr)) continue;
  179.     
  180.             GetDlgItemText(hwnd, IDC_CAPTION, szTmp, 128);
  181.             bstr = BSTRFROMANSI(szTmp);
  182.             ASSERT(bstr, "Maggots!");
  183.             pButton->put_Caption(bstr);
  184.             SysFreeString(bstr);
  185.             pButton->Release();
  186.         }
  187.         }
  188.         return TRUE;
  189.  
  190.       case WM_COMMAND:
  191.         switch (LOWORD(wParam)) {
  192.           case IDC_CAPTION:
  193.             if (HIWORD(wParam) == EN_CHANGE)
  194.                 MakeDirty();
  195.         }
  196.         break;
  197.     }
  198.  
  199.     return FALSE;
  200. }
  201.  
  202.  
  203.